package control;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.GenericDao;
import dao.QuartoDao;

import model.Quarto;

public class CtrlQuarto {
	Connection conexao = GenericDao.getConnection();

	public boolean cadstrarQuarto(Quarto quarto) {
		QuartoDao quartoDao = new QuartoDao();
		boolean inserido = false;
		try {
			quartoDao.insereQuarto(quarto);
			inserido = true;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return inserido;
	}

	public Quarto buscarQuarto(int numero) {
		Quarto quarto = new Quarto();
		QuartoDao quartoDao = new QuartoDao();
		quarto = quartoDao.consultaQuarto(numero);
		return quarto;
	}
	
	public Quarto buscarQuartoAndar(int numero, int andar) {
		Quarto quarto = new Quarto();
		QuartoDao quartoDao = new QuartoDao();
		quarto = quartoDao.consultaQuartoAndar(numero,andar);
		return quarto;
	}

	public List<Quarto> listaCompleta(){
		List<Quarto> retorno = new ArrayList<>();
		QuartoDao quartoDao = new QuartoDao();
		retorno = quartoDao.listaCompleta();
		return retorno;		
	}
	
	public boolean alterar(Quarto quarto) {
		boolean editado = false;
		QuartoDao quartoDao = new QuartoDao();
		try {
			quartoDao.atualizaQuarto(quarto);
			editado = true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return editado;
	}

	public boolean excluirQuarto(int numeroQuarto, int andar) {
		boolean deletado = false;
		QuartoDao quartoDao = new QuartoDao();
		try {
			deletado = quartoDao.deletaQuarto(numeroQuarto, andar);
			deletado = true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return deletado;
	}
	
	// TODO for Future Implementations;
	public Quarto buscarQuartoPorAndar(int Andar) {
		Quarto quarto = new Quarto();
		ResultSet rs = null;

		try {
			PreparedStatement ps = conexao
					.prepareStatement("select * from Quarto where Andar = ?");
			ps.setInt(1, Andar);
			ps.execute();
			rs = ps.getResultSet();
			if (rs.next()) {
				quarto.setNumeroQuarto(Integer.parseInt(rs.getString(1)));
				quarto.setCapacidade(rs.getInt(2));
				quarto.setCamasCasal(rs.getInt(3));
				quarto.setAndar(rs.getInt(4));
				// quarto.setCategoria(rs.getInt(5));
				// quarto.isOcupado(rs.getBoolean(6));
				// quarto.isLivre(rs.getBoolean(6));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return quarto;
	}

	public Quarto buscarQuartoPorCategoria(String Categoria) {
		Quarto quarto = new Quarto();
		ResultSet rs = null;

		try {
			PreparedStatement ps = conexao
					.prepareStatement("select * from Quarto where Categoria = ?");
			ps.setString(1, Categoria);
			ps.execute();
			rs = ps.getResultSet();
			if (rs.next()) {
				quarto.setNumeroQuarto(Integer.parseInt(rs.getString(1)));
				quarto.setCapacidade(rs.getInt(2));
				quarto.setCamasCasal(rs.getInt(3));
				quarto.setAndar(rs.getInt(4));
				// quarto.setCategoria(rs.getInt(5));
				// quarto.isOcupado(rs.getBoolean(6));
				// quarto.isLivre(rs.getBoolean(6));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return quarto;
	}

}
